package com.ftg.rbac.service;

import com.ftg.rbac.dto.UserDto;
import com.ftg.rbac.dto.UserUpdateDto;
import com.ftg.rbac.entity.User;
import com.ftg.rbac.util.BaseResultSet;

import java.util.Map;

/**
 * 用户管理
 *
 *  1 : 对象的功能 （处理）（方法） (页面里面的要与后台交互的点)
 *  1.1 列表功能
 *  1.1.1 模糊查询 （动态where）
 *  1.1.2 分页     (limit)
 *  1.1.3 数据
 *  1.2 添加
 *  1.2.1 查询所有岗位 (岗位表)
 *  1.2.2 查询所有部门
 *  1.2.3 所有角色
 *  1.2.4 添加功能
 *  1.3 修改
 *  1.3.1 查询所有岗位 (岗位表)
 *  1.3.2 查询所有部门
 *  1.3.3 所有角色
 *  1.3.4 当前选中的一条数据全部信息 (id=?)
 *  1.3.5 修改
 *  1.4 删除
 *  1.4.1 部门设置 null
 *  1.4.2 根据 id删除 一条
 *
 *  home :
 *   1 : id name children (写完它) (mapper service vo)
 *   2 : 在用户功能里添加一个判断 当前是用户名不能重复功能  返回类型为 boolean
 *
 * @author kangjx
 * @version 1.0
 * @date 2023/3/16 上午9:10
 */
public interface IUser {

    /**
     * 分页列表功能
     * @return
     */
    BaseResultSet list( String unickname,
                        String utel,
                        boolean ustate,
                        String ucreatedate1,
                        String ucreatedate2,Integer pageNo,Integer pageNum);

    /**
     * 创建用户
     * @return BaseResultSet
     */
    BaseResultSet createUser(UserDto userDto);

    /**
     * 查询一条
     * @param uid  主键
     * @return     用户
     */
    BaseResultSet findUserById(Integer uid);

    /**
     * 成功|失败
     * 1   0
     * 文字
     * @return
     */
    BaseResultSet modifyUserById(UserUpdateDto userUpdateDto);

    /**
     *  业务角度 ：
     *    物理删除  (真删)
     *    逻辑删除 （假删）
     *
     *    talbe user
     *    isdelete 0 1(不存在) char(1) default 0(存在)
     *
     *    逻辑删除 (2年)
     *    update user set isdelete=1 where id = ?;
     *
     *    查询
     *    select * from user where isdelete = 0;
     *
     *    select * from user where isdelete = 1;
     *
     *
     *
     * 成功|失败
     * 1   0
     * 文字
     * @return
     */
    BaseResultSet delete(Integer uid);

}
